1. Field
The present invention relates to network technology. More particularly, the present invention relates to methods and apparatus for improved mirroring techniques implemented in storage area networks and network based virtualization.
2. Description of the Related Art
In recent years, the capacity of storage devices has not increased as fast as the demand for storage. Therefore a given server or other host must access multiple, physically distinct storage nodes (typically disks). In order to solve these storage limitations, the storage area network (SAN) was developed. Generally, a storage area network is a high-speed special-purpose network that interconnects different data storage devices and associated data hosts on behalf of a larger network of users. However, although a SAN enables a storage device to be configured for use by various network devices and/or entities within a network, data storage needs are often dynamic rather than static.
FIG. 1 illustrates an exemplary conventional storage area network. More specifically, within a storage area network 102, it is possible to couple a set of hosts (e.g., servers or workstations) 104, 106, 108 to a pool of storage devices (e.g., disks). In SCSI parlance, the hosts may be viewed as “initiators” and the storage devices may be viewed as “targets.” A storage pool may be implemented, for example, through a set of storage arrays or disk arrays 110, 112, 114. Each disk array 110, 112, 114 further corresponds to a set of disks. In this example, first disk array 110 corresponds to disks 116, 118, second disk array 112 corresponds to disk 120, and third disk array 114 corresponds to disks 122, 124. Rather than enabling all hosts 104-108 to access all disks 116-124, it is desirable to enable the dynamic and invisible allocation of storage (e.g., disks) to each of the hosts 104-108 via the disk arrays 110, 112, 114. In other words, physical memory (e.g., physical disks) may be allocated through the concept of virtual memory (e.g., virtual disks). This allows one to connect heterogeneous initiators to a distributed, heterogeneous set of targets (storage pool) in a manner enabling the dynamic and transparent allocation of storage.
The concept of virtual memory has traditionally been used to enable physical memory to be virtualized through the translation between physical addresses in physical memory and virtual addresses in virtual memory. Recently, the concept of “virtualization” has been implemented in storage area networks through various mechanisms. Virtualization interconverts physical storage and virtual storage on a storage network. The hosts (initiators) see virtual disks as targets. The virtual disks represent available physical storage in a defined but somewhat flexible manner. Virtualization provides hosts with a representation of available physical storage that is not constrained by certain physical arrangements/allocation of the storage. Some aspects of virtualization have recently been achieved through implementing the virtualization function in various locations within the storage area network. Three such locations have gained some level of acceptance: virtualization in the hosts (e.g., 104-108), virtualization in the disk arrays or storage arrays (e.g., 110-114), and virtualization in the network fabric (e.g., 102).
In some general ways, virtualization on a storage area network is similar to virtual memory on a typical computer system. Virtualization on a network, however, brings far greater complexity and far greater flexibility. The complexity arises directly from the fact that there are a number of separately interconnected network nodes. Virtualization must span these nodes. The nodes include hosts, storage subsystems, and switches (or comparable network traffic control devices such as routers). Often the hosts and/or storage subsystems are heterogeneous, being provided by different vendors. The vendors may employ distinctly different protocols (standard protocols or proprietary protocols). Thus, in many cases, virtualization provides the ability to connect heterogeneous initiators (e.g., hosts or servers) to a distributed, heterogeneous set of targets (storage subsystems), enabling the dynamic and transparent allocation of storage.
Examples of network specific virtualization operations include the following: RAID 0 through RAID 5, concatenation of memory from two or more distinct logical units of physical memory, sparing (auto-replacement of failed physical media), remote mirroring of physical memory, logging information (e.g., errors and/or statistics), load balancing among multiple physical memory systems, striping (e.g., RAID 0), security measures such as access control algorithms for accessing physical memory, resizing of virtual memory blocks, Logical Unit (LUN) mapping to allow arbitrary LUNs to serve as boot devices, backup of physical memory (point in time copying), and the like. These are merely examples of virtualization functions.
Some features of virtualization may be implemented using a Redundant Array of Independent Disks (RAID). Various RAID subtypes are generally known to one having ordinary skill in the art, and include, for example, RAID0, RAID1, RAID0+1, RAID5, etc. In RAID1, typically referred to as “mirroring”, a virtual disk may correspond to two physical disks 116, 118 which both store the same data (or otherwise support recovery of the same data), thereby enabling redundancy to be supported within a storage area network. In RAID0, typically referred to as “striping”, a single virtual disk is striped across multiple physical disks. Some other types of virtualization include concatenation, sparing, etc.
Generally, a mirrored configuration is when a volume is made of n copies of user data. In this configuration, the redundancy level is n-1. Conventionally, the mirroring functionality is implemented at either the host or the storage array. According to conventional techniques, when it is desired to create a mirror of a selected volume, the following steps may be performed. First, the target volume (i.e. volume to be mirrored) is taken offline so that the data stored in the target volume remains consistent during the mirror creation process. Second, the required disk space for implementing the mirror is determined and allocated. Thereafter, the entirety of the data of the target volume is copied over to the newly allocated mirror in order to create an identical copy of the target volume. Once the copying has been completed, the target volume and its mirror may then be brought online.
A similar process occurs when synchronizing a mirror to a selected target volume using conventional techniques. For example, the target volume (i.e. volume to be synchronized to) is initially taken offline. Thereafter, the entirety of the data of the target volume may be copied over to the mirror in order to ensure synchronization between the target volume and the mirror. Once the copying has been completed, the target volume and its mirror may then be brought online.
One problem associated with conventional mirroring techniques such as those described above relates to the length of time needed to successfully complete a mirroring operation. For example, in situations where the target volume includes terabytes of data, the process of creating or synchronizing a mirror with the target volume may take several days to complete, during which time the target volume may remain off line. Other issues involving conventional mirroring techniques may include one or more of the following: access to a mirrored volume may need to be serialized through a common network device which is in charge of managing the mirrored volume; access to the mirrored volume may be unavailable during mirroring operations; mirroring architecture has limited scalability; etc.
In view of the above, it would be desirable to improve upon mirroring techniques implemented in storage area networks and network based virtualization in order, for example, to provide for improved network reliability and efficient utilization of network resources.